#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  deque<int> dq; // 用于存储当前队列中的元素
  deque<int> maxDq; // 用于存储当前最大值的队列
  for (size_t i = 0; i < n; i++) {
    char op;
    cin >> op;
    if (op == '+') {
      int x;
      cin >> x;
      dq.push_back(x); // 将新元素添加到队列
      // 更新最大值队列
      while (!maxDq.empty() && maxDq.back() < x) {
        maxDq.pop_back(); // 移除比新元素小的元素
      }
      maxDq.push_back(x); // 将新元素添加到最大值队列
    } else if (op == '-') {
      if (!dq.empty()) {
        // 检查移除的元素是否是当前最大值
        if (dq.front() == maxDq.front()) {
          maxDq.pop_front(); // 如果移除的元素是当前最大值，更新最大值队列
        }
        dq.pop_front(); // 移除队列的前端元素
      }
    } else if (op == '?') {
      if (!maxDq.empty()) {
        cout << maxDq.front() << endl; // 输出当前最大值
      } else {
        cout << 0 << endl; // 处理空队列的情况
      }
    }
  }

  return 0;
}